const { Controller } = require('egg')

var RPCClient = require('@alicloud/pop-core').RPCClient;

function initVodClient(accessKeyId, accessKeySecret,) {
    var regionId = 'cn-shanghai';   // 点播服务接入地域
    var client = new RPCClient({//填入AccessKey信息
        accessKeyId: accessKeyId,
        accessKeySecret: accessKeySecret,
        endpoint: 'http://vod.' + regionId + '.aliyuncs.com',
        apiVersion: '2017-03-21'
    });

    return client;
}


class videoController extends Controller {
    /**
     * 异步函数getvod，用于获取视频点播上传凭证
     * 该函数通过初始化视频点播客户端，并调用接口创建视频上传任务，从而获取上传凭证
     * 主要步骤包括：初始化视频点播客户端、调用接口创建视频上传任务、处理返回数据
     */
    async getvod() {
        // 获取上下文对象ctx，用于返回结果
        const { ctx } = this;
        // 初始化视频点播客户端，传入AccessKey ID和AccessKey Secret
        let client = initVodClient(
            'LTAI5tCSDQ4BA8K3XGQKuT4f',
            'opwjNqwjtLjVtungqHmQFKP6iU1UpZ'
        );
        // 调用接口创建视频上传任务，设置视频标题和文件名
        const vodback = await client.request("CreateUploadVideo", {
            Title: 'test vod',
            FileName: 'filename.mp4'
        }, {});
        // 设置返回数据，包括错误码、消息和视频上传任务结果
        ctx.body = {
            error: 0,
            msg: '成功获取凭证',
            data: vodback
        }
    }

    /**
     * 
     * @returns 上传视频
     */
    async upload() {
        const { ctx } = this;
        const {_id} = ctx.userinfo
        const {title,vodid} = ctx.request.body;
        try{
            const isexit = await ctx.service.video.videoisexit(vodid,_id)
            if(isexit !== 0){
                ctx.body = {
                    error:1,
                    msg:"视频已存在",
                }
                ctx.status = 401
                return
            }
            const dbback =await ctx.service.video.upload({title,vodid,userid:_id})
            console.log(dbback)
            if(dbback){
               ctx.body = {
                   error:0,
                   msg:"视频上传成功",
                   data:dbback
               }
            }else{
                ctx.body = {
                    error:1,
                    msg:"视频上传失败",
                    data:null
                }
                ctx.status = 401
            }
        }catch{
            ctx.body = {
                error:1,
                msg:"视频上传失败",
                data:null
            }
            ctx.status = 401
        }

    }

    /**
     * 分页获取视频列表
     */
    async list(){
        const { ctx } = this;
        // const userinfo = ctx.userinfo;
        const {page=1,pagesize=10} = ctx.query;
        try{
            const {videos,count} = await ctx.service.video.list(page,pagesize)
            ctx.body = {
                error:0,
                msg:"获取视频列表成功",
                data:videos,
                count
            }
        }catch{
            ctx.body = {
                error:1,
                msg:"获取视频列表失败",
                data:null
            }
        }
        
    }
    /**
     * 获取视频的详情
     */
    async videodetail(){
        const { ctx } = this;
        const {vodid} = ctx.params;
        try{
            const dbback = await ctx.service.video.getvideo(vodid)
            if(dbback){
                ctx.body = {
                    error:0,
                    msg:"获取视频详情成功",
                    data:dbback
                }
            }else{
                ctx.body = {
                    error:1,
                    msg:"获取视频详情失败",
                }
                ctx.status = 401;
            }
        }catch{
            ctx.body = {
                error:1,
                msg:"获取视频详情失败",
            }
            ctx.status = 401;
        }
    }

    
}

module.exports = videoController;